home *** CD-ROM | disk | FTP | other *** search
- unit Unit3;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ComCtrls, ToolWin, ShellAPI, ImgList;
-
- const
- wm_AppBarMessage = wm_User;
-
- type
- TForm1 = class(TForm)
- CoolBar1: TCoolBar;
- ToolBar1: TToolBar;
- ToolButton1: TToolButton;
- ToolButton2: TToolButton;
- ToolButton3: TToolButton;
- ToolButton4: TToolButton;
- ToolButton5: TToolButton;
- ToolButton6: TToolButton;
- ToolButton7: TToolButton;
- ToolButton8: TToolButton;
- ToolButton9: TToolButton;
- ImageList1: TImageList;
- procedure ToolButton1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormActivate(Sender: TObject);
- procedure FormShow(Sender: TObject);
- private
- { Private declarations }
- abd: TAppBarData;
- function GetRequestRect: TRect;
- procedure WMAppBarMessage(var Msg: TMessage); message wm_AppBarMessage;
- procedure WMWindowPosChanged(var Msg: TWMWindowPosMsg); message WM_WindowPosChanged;
- property RequestRect: TRect read GetRequestRect;
- public
- { Public declarations }
- procedure CreateParams(var Params: TCreateParams); override;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- // fill the AppBarData data structure
- abd.cbSize := sizeof(abd);
- abd.hWnd := Handle;
- abd.uCallBackMessage := wm_AppBarMessage;
- abd.uEdge := ABE_BOTTOM;
- abd.rc := RequestRect;
- abd.lParam := 0;
- SHAppBarMessage(ABM_NEW, abd);
-
- SHAppBarMessage(ABM_QUERYPOS, abd);
- abd.rc.Top := abd.rc.Bottom - Height;
- SHAppBarMessage(ABM_SETPOS, abd);
- SetBounds(abd.rc.Left, abd.rc.Top, abd.rc.Right-abd.rc.Left, abd.rc.Bottom-abd.rc.Top);
- end;
-
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- SHAppBarMessage(ABM_REMOVE, abd);
- end;
-
- procedure TForm1.CreateParams(var Params: TCreateParams);
- begin
- inherited CreateParams(Params);
- if Params.ExStyle and WS_EX_TOOLWINDOW = 0 then
- Params.ExStyle := Params.ExStyle + WS_EX_TOOLWINDOW;
- end;
-
- procedure TForm1.FormShow(Sender: TObject);
- begin
- ShowWindow(Application.Handle, SW_HIDE);
- end;
-
- procedure TForm1.FormActivate(Sender: TObject);
- begin
- SHAppBarMessage(ABM_ACTIVATE, abd);
- end;
-
- function TForm1.GetRequestRect: TRect;
- begin
- // set the requested Rect
- Result.Left := Screen.Width - Width;
- Result.Top := Screen.Height - Height;
- Result.Right := Screen.Width;
- Result.Bottom := Screen.Height;
- end;
-
- procedure TForm1.WMAppBarMessage(var Msg: TMessage);
- begin
- // hide when fullscreen apps are displayed
- if Msg.wParam = ABN_FULLSCREENAPP then
- if Msg.lParam <> 0 then Hide else Show;
-
- if Msg.wParam = ABN_POSCHANGED then
- begin
- // fill the AppBarData data structure
- abd.rc := RequestRect;
- SHAppBarMessage(ABM_QUERYPOS, abd);
- abd.rc.Top := abd.rc.Bottom - Height;
- abd.rc.Left := abd.rc.Right - Width;
- SHAppBarMessage(ABM_SETPOS, abd);
- SetBounds(abd.rc.Left, abd.rc.Top, abd.rc.Right-abd.rc.Left, abd.rc.Bottom-abd.rc.Top);
- end;
- end;
-
- procedure TForm1.WMWindowPosChanged(var Msg: TWMWindowPosMsg);
- begin
- // must send this message to maintain correct Z-order
- SHAppBarMessage(ABM_WINDOWPOSCHANGED, abd);
- inherited;
- end;
-
- procedure TForm1.ToolButton1Click(Sender: TObject);
- begin
- Close;
- end;
-
- end.
-